{$CLEO .qa}
{$USE CLEO+}
{$USE newOpcodes}
{$USE ini}

0000: NOP

script_name "RDWRQA"

// By ArtemQa146

const
    worker = 31@
    worker_driver = 30@
    work_car = 29@
    road_hole_1 = 28@
    road_hole_2 = 27@
    road_hole_3 = 17@
    Coords_x = 26@
    Coords_y = 25@
    Coords_z = 24@
    angle_1 = 23@
    render_hole = 22@
    render_shv = 21@
    barrier_obj = 20@
    procces = 19@
    shovl = 18@
end

0087: Coords_x = 0@ // (float)
0087: Coords_y = 1@ // (float)
0087: Coords_z = 2@ // (float)
0087: angle_1 = 3@ // (float)
0085: render_shv = 4@ // (int)
0085: render_hole = 5@ // (int)

if
    0E4D: random_percent 40
then
else
    repeat
    wait 0
    until not locate_char_distance_to_coordinates $PLAYER_ACTOR pos coords_x coords_y coords_z radius 200.0
    0A93: terminate_this_custom_script
end

    repeat
    wait 0
    04ED: load_animation  "PedEventsMod"
    until 04EE:   animation "PedEventsMod" loaded
    
    repeat
    wait 0
    model.Load(524)
    until model.Available(524)
    
    model.Load(260)
    model.Load(3000)
    model.Load(1427)
    if
        not model.Available(260)
    then
        repeat
        wait 0
        model.Load(260)
        until model.Available(260)
    end
    if
        not model.Available(3000)
    then
        repeat
        wait 0
        model.Load(3000)
        until model.Available(3000)
    end
    if
        not model.Available(1427)
    then
        repeat
        wait 0
        model.Load(1427)
        until model.Available(1427)
    end
    038B: load_requested_models
    009A: worker = create_actor_pedtype 4 model 260 at Coords_x Coords_y Coords_z
    0173: set_actor worker Z_angle_to angle_1
    060A: create_decision_maker_type 0 store_to 1@ // decision\allowed\m_.ped files
    060B: set_actor worker decision_maker_to 1@
    0E24: fix_char worker ground 1 brightness 1 and_fade_in 0
    0F02: create_render_object_to_char_bone_from_special worker special_model render_shv bone 24 offset 0 0 0 rotation 0 0 0 store_to shovl
    
    04C4: store_coords_to 1@ 2@ 3@ from_actor worker with_offset -0.8 2.9 0.0
    009A: worker_driver = create_actor_pedtype 4 model 260 at 1@ 2@ 3@
    0172: 1@ = actor worker Z_angle
    1@ -= 110.0
    0173: set_actor worker_driver Z_angle_to 1@
    060A: create_decision_maker_type 0 store_to 1@ // decision\allowed\m_.ped files
    060B: set_actor worker_driver decision_maker_to 1@
    0E24: fix_char worker_driver ground 1 brightness 1 and_fade_in 0
    
    04C4: store_coords_to 1@ 2@ 3@ from_actor worker with_offset 0.0 -6.0 -1.0
    00A5: work_car = create_car 524 at 1@ 2@ 3@
    0172: 1@ = actor worker Z_angle
    1@ += 180.0
    0175: set_car work_car Z_angle_to 1@
    
    04C4: store_coords_to 1@ 2@ 3@ from_actor worker with_offset 0.0 1.15 -0.975
    0E01: create_object_no_save 3000 at 1@ 2@ 3@ offset 0 ground 0 to road_hole_1
    0E01: create_object_no_save 3000 at 1@ 2@ 3@ offset 0 ground 0 to road_hole_2
    0E01: create_object_no_save 3000 at 1@ 2@ 3@ offset 0 ground 0 to road_hole_3
    0F04: create_render_object_to_object_from_special road_hole_1 special_model render_hole offset 0 0 0 rotation 0 90.0 0 store_to 1@
    0F04: create_render_object_to_object_from_special road_hole_2 special_model render_hole offset 0 0 0 rotation 0 90.0 0 store_to 1@
    0F04: create_render_object_to_object_from_special road_hole_3 special_model render_hole offset 0 0 0 rotation 0 90.0 0 store_to 1@
    08D2: object road_hole_1 scale_model 0.0
    08D2: object road_hole_2 scale_model 0.0
    08D2: object road_hole_3 scale_model 0.0
    
    04C4: store_coords_to 1@ 2@ 3@ from_actor worker_driver with_offset 0.0 1.2 -0.5
    0E01: create_object_no_save 1427 at 1@ 2@ 3@ offset 0 ground 0 to barrier_obj
    0177: set_object barrier_obj Z_angle_to angle_1

    0812: AS_actor worker perform_animation "Sweep" IFP "PedEventsMod" framedelta 2.0 loopA 1 lockX 0 lockY 0 lockF 0 time -1  // versionB
    0812: AS_actor worker_driver perform_animation "Stand_1" IFP "PedEventsMod" framedelta 2.0 loopA 1 lockX 0 lockY 0 lockF 0 time -1  // versionB
    020A: set_car work_car door_status_to 2
    
    model.Destroy(260)
    model.Destroy(524)
    model.Destroy(3000)
    model.Destroy(1427)
    timerb = 0
    timera = 0
    procces = 0

    repeat
    wait 0
    if and
        056D:   actor worker defined
        056D:   actor worker_driver defined
        056E:   car work_car defined
        03CA:   object road_hole_1 exists
        03CA:   object road_hole_2 exists
        03CA:   object road_hole_3 exists
        03CA:   object barrier_obj exists
    then
    
        // , ,    
        080E: get_actor $PLAYER_ACTOR ped_event_to 2@
        080E: get_actor worker ped_event_to 3@
        if or
            actor.Dead(worker)
            2@ == 11
            3@ == 49
            3@ == 9
            051A:   actor worker damaged_by_actor $PLAYER_ACTOR
            not is_char_script_controlled worker
            0119:   car work_car wrecked
        then
            break
        end
        
        // , ,    
        080E: get_actor worker_driver ped_event_to 3@
        if or
            actor.Dead(worker_driver)
            3@ == 49
            3@ == 9
            051A:   actor worker_driver damaged_by_actor $PLAYER_ACTOR
            not is_char_script_controlled worker_driver
            00DB:   actor $PLAYER_ACTOR in_car work_car
            not $ACTIVE_INTERIOR == 0
        then
            break
        end
    
        if
            timerb < 500
        then
            //   ,  
            0E5B: get_car_dummy_coord work_car dummy 1 world_coords 1 invert_x 1 store_to 1@ 2@ 3@
            024F: create_corona_with_radius 0.4 type 4 lensflares 0 with_color 255 140 0 at 1@ 2@ 3@
            0E5B: get_car_dummy_coord work_car dummy 1 world_coords 1 invert_x 0 store_to 1@ 2@ 3@
            024F: create_corona_with_radius 0.4 type 4 lensflares 0 with_color 255 140 0 at 1@ 2@ 3@
            0E5B: get_car_dummy_coord work_car dummy 0 world_coords 1 invert_x 1 store_to 1@ 2@ 3@
            024F: create_corona_with_radius 0.4 type 4 lensflares 0 with_color 255 140 0 at 1@ 2@ 3@
            0E5B: get_car_dummy_coord work_car dummy 0 world_coords 1 invert_x 0 store_to 1@ 2@ 3@
            024F: create_corona_with_radius 0.4 type 4 lensflares 0 with_color 255 140 0 at 1@ 2@ 3@
            0400: store_coords_to 1@ 2@ 3@ from_object barrier_obj with_offset 0.298 0.057 0.524
            024F: create_corona_with_radius 0.4 type 4 lensflares 0 with_color 255 140 0 at 1@ 2@ 3@
        else
            if
                timerb > 1000
            then
                timerb = 0
            end
        end
        
        if
            not locate_char_distance_to_coordinates $player_actor pos Coords_x Coords_y Coords_z radius 35.0
        then
            timera = 0
        end

        
        if and
            0611:   actor worker performing_animation "Sweep"
            procces == 0
        then
            0613: 1@ = actor worker animation "Sweep" time
            if and
                1@ > 0.5
                1@ < 0.6
                timera > 20000
            then
                procces = 1
            end
        end
        
        if
            procces == 1
        then
            0812: AS_actor worker_driver perform_animation "Repair" IFP "PedEventsMod" framedelta 2.0 loopA 0 lockX 0 lockY 0 lockF 1 time -1  // versionB
            if 0E4D: random_percent 50
            then 0812: AS_actor worker perform_animation "homeless3" IFP "PedEventsMod" framedelta 2.0 loopA 0 lockX 0 lockY 0 lockF 1 time -1  // versionB
            else 0812: AS_actor worker perform_animation "homeless4" IFP "PedEventsMod" framedelta 2.0 loopA 0 lockX 0 lockY 0 lockF 1 time -1  // versionB
            end
            01BC: put_object road_hole_1 at 0.0 0.0 0.0
            01BC: put_object road_hole_2 at 0.0 0.0 0.0
            01BC: put_object road_hole_3 at 0.0 0.0 0.0
            0E31: set_render_object_visible shovl 0
            procces = 2
            wait 300
            continue
        end
        
        if
            procces == 2
        then
            if
                0611:   actor worker_driver performing_animation "Repair"
            then
                0613: 1@ = actor worker_driver animation "Repair" time
                if
                    1@ > 0.85
                then
                    01BC: put_object barrier_obj at 0.0 0.0 0.0
                    procces = 3
                end
            else
                procces = 3
            end
        end
        
        if
            procces == 3
        then
            05CB: AS_actor worker_driver enter_car work_car as_driver 15000 ms
            05CA: AS_actor worker enter_car work_car passenger_seat 0 time 15000
            020A: set_car work_car door_status_to 1
            procces = 4
        end
        
        if
            procces == 4
        then
            if and
                00DB:   actor worker_driver in_car work_car
                00DB:   actor worker in_car work_car
            then
                01C2: remove_references_to_actor worker // Like turning an actor into a random pedestrian
                wait 100
                if 056D:   actor worker defined
                then 0430: put_actor worker into_car work_car passenger_seat 0
                end
                if 056D:   actor worker_driver defined
                then 01C2: remove_references_to_actor worker_driver // Like turning an actor into a random pedestrian
                end
                if
                    056E:   car work_car defined
                then
                    00AF: set_car work_car driver_behaviour_to 1
                    00AE: set_car work_car traffic_behaviour_to 4
                    01C3: remove_references_to_car work_car
                end
                work_car = -1
                worker = -1
                worker_driver = -1
                break
            end
        end
        
    else
        break
    end
    
    until not locate_char_distance_to_coordinates $player_actor pos Coords_x Coords_y Coords_z radius 150.0
    

        if 056D:   actor worker defined
        then 01C2: remove_references_to_actor worker // Like turning an actor into a random pedestrian
        end
        if 056D:   actor worker_driver defined
        then 01C2: remove_references_to_actor worker_driver // Like turning an actor into a random pedestrian
        end
        if 056E:   car work_car defined
        then 01C3: remove_references_to_car work_car
        end
        if 03CA:   object road_hole_1 exists
        then 01C4: remove_references_to_object road_hole_1 // This object will now disappear when the player looks away
        end
        if 03CA:   object road_hole_2 exists
        then 01C4: remove_references_to_object road_hole_2 // This object will now disappear when the player looks away
        end
        if 03CA:   object road_hole_3 exists
        then 01C4: remove_references_to_object road_hole_3 // This object will now disappear when the player looks away
        end
        if 03CA:   object barrier_obj exists
        then 01C4: remove_references_to_object barrier_obj // This object will now disappear when the player looks away
        end

    04EF: release_animation "PedEventsMod"
    wait 180000
    repeat
    wait 0
    until not locate_char_distance_to_coordinates $player_actor pos Coords_x Coords_y Coords_z radius 300.0

0A93: terminate_this_custom_script
